﻿using System;

namespace GT.Framework.Mongo.Core
{
    public interface IEntityBase<T>
    {
        T Id { get; }
    }
    public abstract class AggregateBase : IEntityBase<Guid>
    {
        public Guid Id { get; private set; }
        public AggregateBase()
        {
            Id = Guid.NewGuid();
        }
    }
    public interface IValueObject
    {
        Guid Id { get; }
    }
    public abstract class ValueObjectBase
    {
        public Guid Id { get; }

        public ValueObjectBase()
        {
            Id = Guid.NewGuid();
        }
    }
    public abstract class NavgationBase
    {
        public virtual Guid AggregateId { get; set; }
        public virtual Guid ValueObjectId { get; set; }
    }
}
